我对铁轨上的红宝石相对较新。我建立了一个名为友谊的关系,它具有以下属性:
user_id, friend_id, state
在我的friendship.rb模型文件中,我创建了一个相反的方法来帮助我获得反向友谊:
class Friendship < ActiveRecord::Base
def opposite
user = self.user_id;
friend=self.friend_id;
return Friendship.where(user_id:friend,friend_id:user);
end
end
在我的视图文件中,我有:
<h1> Requests Ive sent: </h1>
<%@sent_friendships.each do |x|%>
<%=x.opposite%><br>
<%=x.opposite.inspect%>
<%end%>
注意:@sent_friendships在我的控制器中定义为:@sent_friendships=current_user.friendships.where(state:'pending');
查看输出:
x.opposite:
#<Friendship::ActiveRecord_Relation:0x007fd8abcf3498>
x.opposite.inspect:
#<ActiveRecord::Relation [#<Friendship id: 4, user_id: 3, friend_id: 1, created_at: "2015-07-01 21:42:21", updated_at: "2015-07-01 21:42:21", state: "requested">]>
但是在调用x.opposite.inspect之后,我如何访问特定属性,例如只是状态?如果我尝试x.opposite.state我得到错误:
undefined method `state' for #<Friendship::ActiveRecord_Relation:0x007fd8a3f612f0>
我很困惑?很明显.state是调用inspect方法后的一个属性?请帮帮忙?!
答案 0 :(得分:1)
使用Active Record从对面返回的内容&#39;其中&#39;是一个ActiveRecord :: Relation,它是一个类似数组的结构。所以x.opposite.first.state
应该得到你想要的东西。