在rails 2.3中的中间表上查找_or_create_by

时间:2014-03-10 17:22:36

标签: ruby associations ruby-on-rails-2

我有2个表,与第三个表有关,如下所示。

class A < ActiveRecord::Base
  has_many :B, :through => :AB
  has_many :AB
end

class B < ActiveRecord::Base
  has_many :A, :through => :AB
  has_many :AB
end

class AB < ActiveRecord::Base
  belongs_to :B,
  belongs_to :A
end

我希望能够使用find_or_create插入到中间表(AB)中。但是find_or_create不能在AB上工作。我怎么能这样做,除了单独找到和创造?

PS:我不想使用has_and_belongs_to_many,因为这不会创建中间模型,我想插入到中间表中而不在结束表A和B中创建任何额外的行。

请一些建议吗?

1 个答案:

答案 0 :(得分:0)

在rails 4中添加了

find_or_create_by。您可以自己编写(应该转到初始化程序):

class ActiveRecord::Base
  def self.find_by(params)
    scoped.where(params).limit(1).first
  end

  def self.find_or_create_by(params)
    find_by(params) || create(params)
  end
end