我想通过关联在has_many中设置默认值。
假设我有三种模式:
人
友
狗
一个人可以要求狗成为他们的朋友。
所以一个人会创建一个关联,其中朋友的活动列= false。
User
has_many :friends
has_many :dogs, :through => :friends
现在我将狗分配给用户
User.find(1).dogs << dog
在活动列中,friends表为空。
我的朋友模型被定义为
Friend
def initialize(args = {})
super(args)
active = false
end
但这不起作用,因为永远不会创建友元对象。我是否必须手动创建一个?
答案 0 :(得分:1)
设置模型的默认值;在模型中我这样做
before_save :default_values
private
def default_values
self.status = :active unless self.status
end
不确定这是否是正确的做法。
答案 1 :(得分:1)
使用以下代码,您将使用friend
active = false
class User < ActiveRecord::Base
has_many :friends, :conditions => "active = false"
has_many :dogs, :through => :friends
end
@user = User.new
@user.friends.create #or @user.friends.build