なぜこれが起こっているのか誰か教えてもらえますか?
Ruby on Rails を使用してソーシャル ネットワーキング Web サイトを作成しました。RoRでプログラミングするのはこれが初めてです。
ユーザーが別のユーザーをブロックしたかどうかを示す「ブロックされた」属性を含む「フレンドシップ」という名前のモデルがあります。
IRBで次を実行すると-
friendship = u.friendships.where(:friend_id => 22).first
IRB は私に -
Friendship Load (0.6ms) SELECT `friendships`.* FROM `friendships` WHERE `friendships`.`user_id` = 17 AND `friendships`.`friend_id` = 22 LIMIT 1
=> #<Friendship id: 33, user_id: 17, friend_id: 22, created_at: "2012-04-07 10:29:49", updated_at: "2012-04-07 10:29:49", blocked: 1>
ご覧のとおり、「ブロックされた」属性の値は「1」です。
しかし、次を実行すると
1.9.2-p290 :030 > friendship.blocked
=> nil
- ブロックされた値は「1」ではなく「nil」です。なぜこうなった?これは非常にばかげた間違いかもしれませんが、私は RoR を初めて使用するので、親切に助けてください!
最初は「ブロックされた」のアクセサメソッドを含めませんでした..試してみましたが、それでも同じ結果が得られました..以下はフレンドシップモデルです..
class Friendship < ActiveRecord::Base
belongs_to :friend, :class_name => "User"
validates_uniqueness_of :friend_id , :scope => :user_id
attr_accessor :blocked
attr_accessible :blocked
end
テーブルのスキーマは次のとおりです。
1.9.2-p290 :009 > friendship.class
=> Friendship(id: integer, user_id: integer, friend_id: integer, created_at: datetime, updated_at: datetime, blocked: integer)