我有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中创建任何额外的行。
请一些建议吗?
答案 0 :(得分:0)
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