Tag: 协会

Rails关联:如何限制/范围has_many:通过多个自引用条件?

最好的方法是什么? 我正在尝试这样的事情,但感觉……错了。 (注意:所有关于:has_many关联中的条件……) class Submission :checklist, :source => :job, :conditions => [“jobs.archived = false OR jobs.archived_at > #{self.created_at} OR jobs.created_at < #{self.created_at}"] end Rails 3.2.11,Ruby 1.9.3 我想做什么 我需要在has_many上传递多个条件:通过关联并引用“自我”模型来在这些条件下进行比较。 我找到了多个条件的例子。 我找到了自我参照比较的例子。 但我找不到这两个元素的任何东西。 这让我觉得我做错了。 背景和定义 提交在某个时间点记录清单及其关联作业的快照。 因此,我希望能够说“submission.jobs”并查看在提交本身创建时与提交的核对表关联的作业。* *它实际上稍微复杂一点:我想要在创建提交时存在的作业以及当时尚未存档的作业。 清单是动态的,可以随时间变化,但我总是通过自行建立的归档系统保持历史记录的完整性,因此当为该清单创建提交时,清单上的作业将是Checklist的Job,其中Job.created_at之前是Submission.created_at(尚未存档)。 因此,虽然提交属于清单,而清单属于清单,但是对于特定提交而言,唯一重要的工作是在创建提交时存在(并且尚未存档)的作业。

如何在Rails中的“编辑”表单中映射关联数据?

这是如何从rails表单中的对象关联提供数据的后续行动? 我想知道,我想使用急切加载来为文章对象的编辑页面提供标签(以及通过关联表格保存的其他属性。在上一个问题中,我被告知我可以使用预先加载预加载该数据的关联。控制器中的IE我扩充.find调用include @article = Article.find(params[:id], :include => [:tags]) 这将是很好的,除了它有两个主要的警告。 首先是它为表格中的字段提供对象。 因此,在此示例中,编辑表单中的:tags字段将填充: [#] 而不是 Wondering 第二个警告是我无法将这些关联提供给自定义字段。 例如,我没有:tags字段,而是有一个:tag_list字段。 在创建文章时,用户在此输入多个标签。 在编辑时,:标签不会按名称映射并放入tag_list字段。 我总是可以将此行添加到控制器: @article.tag_list = @article.tags.map(&:name) 但我正在寻找一个更优雅的解决方案,因为我有很多字段,我必须写这个,这似乎浪费了代码行。 有人可以帮忙吗?

如何使用具有默认排序的依赖destroy子目录销毁ActiveModel实例?

在Rails 4.0中,我有2个ActiveRecord类: class Sequence < ActiveRecord::Base has_many :steps, dependent: :destroy end 和 class Steps { order(‘order ASC’) } end 当我调用mySequence.destroy我收到此错误: PG :: SyntaxError:错误:“order”或其附近的语法错误第1行:…步骤“WHERE”步骤“。”sequence_id“= $ 1 ORDER BY order ASC ^:SELECT”steps“。* FROM”steps“WHERE “steps”。“sequence_id”= $ 1订购ASC 当我删除默认范围时,错误消失了,但我显然必须在我的代码中按顺序排序。 我确实尝试像这样定义关联,并省略default_scope语句: class Sequence < ActiveRecord::Base has_many :steps, dependent: :destroy, order: 'order ASC' end 但它抛出了同样的错误。 还有其他人有这个问题吗? 这是Rails中的错误吗? 我想在孩子们的destroy sql语句中不需要排序。

为rails 3 has_many创建的错误数据库记录:通过关联

我有一个has_many:通过关联。 球员有很多球队,球队有很多球员。 联盟模式Affiliation属于玩家和团队,并且还具有year属性,用于跟踪玩家year的团队归属(或就业)。 我似乎无法找到基于以下规则构建关联的正确方法: 创建一个新玩家。 关联可能是新的或现有的团队。 所以找到它或创建它,但只有在保存播放器时才创建它。 该关联可能包括也可能不包括一年,但只有在保存玩家和团队时才能创建该关联。 播放器模型如下所示: class Player :destroy has_many :teams, :through => :affiliations end 团队模型如下所示: class Team :destroy has_many :players, :through => :affiliations end Affiliation模型如下: class Affiliation < ActiveRecord::Base attr_accessible :player_id, :team_id, :year belongs_to :player belongs_to :team end 我已成功使用PlayersController中的create动作创建没有join模型属性的关联记录,如下所示: class PlayersController < ApplicationController def create @player = Player.new(params[:player].except(:teams)) unless params[:player][:teams].blank? params[:player][:teams].each […]

nil的未定义方法`user’:NilClass

在我的模型电子邮件令牌我有 def self.token_valid(token, type) return unless token.present? token = EmailToken.where(“token = ? and verification_type = ? and confirmed = ‘false’ and created_at <= ?", token, type, EmailToken.expires).includes(:user).first user = token.user end 我从我的控制器中调用这个方法 def confirm_password_reset @user = EmailToken.token_valid(params[:pass_reset],”password”) render ‘reset_password’ if @user end 条件是有效的,因为我测试了它而没有尝试将它与用户关联,它的工作原理。 我要做的是获取token_valid方法来确认令牌并返回令牌及其关联用户。 belongs_to和has_many del也已定义。 Current error : undefined method user for nil:NilClass 谢谢。

如何通过rails中的控制器设置外键?

我有一个嵌套到用户表单的地址表,但无法填写外键。 我见过人们建议使用隐藏字段,但从安全角度来看,这似乎是一个坏主意。 您如何使用控制器设置外键? 现在我收到地址用户当我尝试提交时不能出现空白错误 MVC如下 用户\ new.html.erb Users#new Find me in app/views/users/new.html.erb 楷模 用户 class User < ActiveRecord::Base attr_accessible :MOS, :dateOfBirth, :ets_pcsDate, :firstName, :lastName, :middleInitial, :phoneNum, :rank, :email, :password, :password_confirmation has_secure_password has_one :address, dependent: :destroy accepts_nested_attributes_for :address before_save { |user| user.email = email.downcase } before_save :create_remember_token validates :rank, presence: true validates :firstName, presence: true, length: […]

使用多个belongs_to关联多次连接到同一模型

我有一个类协议,它有一个与成员类的两个belongs_to关联 – 引用为主要和次要: class Agreement < ActiveRecord::Base belongs_to :primary, class_name: 'Member' belongs_to :secondary, class_name: 'Member' … def self.by_member(member_attribute_hash) # returns any agreements that has a primary OR secondary member that matches any of the values # in the member_attribute_hash … end end 会员类不了解与协议类的关联 – 它不需要: class Member < ActiveRecord::Base # contains surname, given_names, member_number … […]

播种未通过嵌套表validation(validates_presence_of)

组织模型与用户模型具有1:多的关联。 我的用户模型文件中有以下validation: belongs_to :organization validates_presence_of :organization_id, :unless => ‘usertype==1’ 如果usertype为1,则表示用户没有与之关联的组织。 对于不同的usertype,organization_id的存在应该是强制性的。 组织模型包括: has_many :users accepts_nested_attributes_for :users, :reject_if => :all_blank, :allow_destroy => true 我的种子文件使用嵌套,包括: Organization.create!(name: “Fictious business”, address: Faker::Address.street_address, city: Faker::Address.city, users_attributes: [email: “helpst@example.com”, username: “helpyzghtst”, usertype: 2, password: “foobar”, password_confirmation: “foobar”]) 播种时会产生以下错误。 从模型中删除validation解决了它,但我不想这样做。 我怎么解决这个问题? validation失败:用户组织不能为空

Rails Paperclip与模型关联

我有一个页面,我可以在其中查看产品,并且可以直接从该页面添加和删除与产品关联的多个图像。 我在表单中使用paperclip来上传新文件。 因为可以为产品保存多个图像,所以我创建了属于产品模型的图像模型。 由于关联,无法使用默认回形针文件输入。 下面我的解决方案正在运行,但我想知道是否有更好的方法在rails中完成此操作而没有我所黑的所有html使其工作。 class Image < ActiveRecord::Base belongs_to :product class Product < ActiveRecord::Base has_many :images, :dependent => :destroy accepts_nested_attributes_for :images, :allow_destroy => true show.html.erb { :multipart => true }) do |f| %> <input id="image" name="product[images_attributes][][photo]” >size=”30″ type=”file” onchange=”this.form.submit();” />

Ruby on Rails Double Association

我有一个student可以留下很多关于他们的comment : class Student < ActiveRecord::Base has_many :comments end class Comment < ActiveRecord::Base belongs_to :student end 然而,评论需要属于它所关注的学生,但也属于发表评论的学生。 也就是说,评论需要同时属于两个不同的学生。 怎么能实现这一目标?