Bud*_*sey 6 activerecord ruby-on-rails ruby-on-rails-3
我不认为在主动记录和查找数据方面存在差异.
这是我的模特
class User < ActiveRecord::Base
has_many :shows
end
class Show < ActiveRecord::Base
belongs_to :user
end
Run Code Online (Sandbox Code Playgroud)
当我使用rails控制台时,我可以执行以下操作并且它可以正常工作.
u = User.find(1)
u.shows
Run Code Online (Sandbox Code Playgroud)
它为我提供了该用户的所有节目.
但是,当我这样做
u = User.where("username = ?", "percent20")
u.shows # this is doesn't work gives me a now instance error
Run Code Online (Sandbox Code Playgroud)
我得到相同的用户和相关信息,但不是关系.我能看到的唯一问题可能是我做错了,因为where和find之间存在一些差异.
任何帮助表示赞赏.
小智 10
问题不在于关系.
u = User.find(1)
Run Code Online (Sandbox Code Playgroud)
返回一个用户
#return a Set of users. In your case its only one user.
u = User.where("username = ?", "percent20")
Run Code Online (Sandbox Code Playgroud)
结果类型是ActiveRecord :: Relation - > [User,User,User]
首先使用例如获得第一个用户
#returns the first user
u = User.where("username = ?", "percent20").first
Run Code Online (Sandbox Code Playgroud)
u.class.name =>"用户"
User.find(1)正在检索具有其ID的特定记录,而User.where("username =?","percent20")正在检索与该条件匹配的记录集.
尝试:
u = User.where("username = ?", "percent20").first
u.shows
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4494 次 |
最近记录: |