ActiveRecord:通过在表上设置默认值

时间:2010-05-12 01:12:23

标签: ruby activerecord

我想通过关联在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

但这不起作用,因为永远不会创建友元对象。我是否必须手动创建一个?

2 个答案:

答案 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