我的理解是,任何rails对象的find方法都需要该对象的id列。但我想使用该表的另一列找到该表/对象的一行。我怎么做 ?
例如,我有userstats模型如下:
create_table "userstats", :force => true do |t|
t.integer "user_id"
t.integer "no_of_wts"
t.integer "no_of_wtb"
t.integer "wts_reputation"
t.integer "wtb_reputation"
t.integer "overall_reputation"
t.datetime "created_at"
t.datetime "updated_at"
end
我想使用user_id(我的用户模型的外键)找到一个userstat模型的实例,而不是使用userstat模型的默认唯一键。
有什么建议吗?
我正在使用Rails 3.0.1
答案 0 :(得分:3)
您可以执行
之类的操作Person.find_by_user_name
Person.find_all_by_last_name
文档:http://api.rubyonrails.org/classes/ActiveRecord/Base.html
有一个非常古老的Railscast ......不确定所有细节是否保持不变,但可以让你了解Railscast:http://railscasts.com/episodes/2-dynamic-find-by-methods
答案 1 :(得分:0)
对于你的问题:
UserStat.find_all_by_user_id(5)
find()的其他一些例子:
UserStat.find_all_by_wts_reputation_and_wtb_reputation(1,2)
UserStat.find(:all, :conditions => { :no_of_wtb=> 5 })