0
は、私はこのようなユーザーオブジェクトとなっ名を持って働いていないクラス名とidを返すには、罰金です:「名前」AR属性
>u=User.find(1)
>u.name
>jt
が、それは、オブジェクトとの関連を持っている私は戻ってユーザーを取得するときそれは、クラスの名前を返します。
oc=ObjectConnection.find(1)
oc.user.name
> User
をとidは私にエラーを与えている:
ruby-1.9.2-p290 :063 > oc.user.id
NoMethodError: User Load (0.4ms) SELECT id, name FROM `users` WHERE (id=1)
undefined method `id' for [#<User id: 1, name: "jt">]:ActiveRecord::Relation
from /Users/jt/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.1.0/lib/active_record/relation.rb:459:in `method_missing'
from (irb):63
from /Users/jt/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.1.0/lib/rails/commands/console.rb:45:in `start'
from /Users/jt/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.1.0/lib/rails/commands/console.rb:8:in `start'
from /Users/jt/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.1.0/lib/rails/commands.rb:40:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'
ruby-1.9.2-p290 :064 >
クラスは次のとおりです。
class ObjectConnection < ActiveRecord::Base
belongs_to :user
end
class User < ActiveRecord::Base
has_many :object_connections
end
何が起こっているのですか?これは本当にシンプルなようです。
あなたが参照しているobject_connectionインスタンスのid = 1ですか?上記のコードでobject_connectionのIDではなく、そのidでobject_connectionを探しています。 – numbersnelson
ObjectConnectionに#userメソッドの実装がありませんか?奇妙なことは、#userがselect句でidとnameを明示的に指定してリレーションを返すことです。 – noodl
@numbersnelson - 私はちょうどそれが直接出力をうまく動作することを示しています。 – timpone