我正在尝试跟踪用户创建的signup_conversions数量 因此,我有以下两种模式:
class SignupConversion < ActiveRecord::Base
belongs_to :user
belongs_to :convertee, :class_name => "User", :foreign_key => 'convertee_id'
attr_accessible :convertee_id
end
class User < ActiveRecord::Base
attr_accessible :name, :email, :password, :password_confirmation
belongs_to :signup_conversion
has_many :signup_conversions
end
这会这样吗?或者我错过了一些关键的东西?
答案 0 :(得分:2)
我还没有尝试过代码,但是我给了你一些希望你觉得有用的提示。
我认为每个has_many
/ has_one
语句应该有其对应的belongs_to
,因此三个belongs_to
和一个has_many
看起来不太好
我不确定has_one :signup_conversion
和has_many :signup_conversions
会很好地合作,所以我宁愿更改名称。我也改变了其他名称,试图让关联更清晰,尽管我不确定我是否完全理解它们所代表的真实概念。你可能会想出更好的名字。
默认情况下,会在猜测外键时将后缀_id
添加到关联名称中,因此在这种情况下您无需指定它。此外,我认为您不需要使该属性可访问,至少不能使该关联工作。
<强> signup_conversion.rb 强>
class SignupConversion < ActiveRecord::Base
belongs_to :owner , :class_name => "User"
belongs_to :convertee, :class_name => "User"
end
<强> user.rb 强>
class User < ActiveRecord::Base
attr_accessible :name, :email, :password, :password_confirmation
has_one :owned_signup_conversion , :class_name => "SignupConversion"
has_many :triggered_signup_conversions, :class_name => "SignupConversion"
end
答案 1 :(得分:0)
您需要的代码多于此处所需的代码;你只需要
class SignupConversion < ActiveRecord::Base
belongs_to :user
end
class User < ActiveRecord::Base
attr_accessible :name, :email, :password, :password_confirmation
has_many :signup_conversions
end
然后,您需要在signup_conversions表中使用user_id列,然后调用
@user.signup_conversions
在你的视图或控制器中。