我正在一个社交网站(基本上是facebook的副本,说实话...),我重用了大部分的insoshi。但是,对于我的喜好来说,精神的兴奋是不够准确的。因为它不支持更专门的信息。你会明白我的意思在以下 代码:rails检查现有的实例属性
item = activity.item
relationship = relationship(item)
case relationship
when 1
raw %(<p>You wrote on your own wall: <br/>
#{truncate(item.body, :length => 20)}</p>)
when 2
raw %(<p>#{link_to item.user.name, item.user} wrote on your wall</p>)
when 3
raw %(<p>#{link_to item.user.name, item.user} wrote on his wall</p>)
when 4
raw %(<p>You wrote on #{link_to item.user.name, item.user}'s wall</p>)
when 5
raw %(<p>#{link_to item.user.name, item.user} wrote on
#{link_to item.contact.name, item.contact}'s wall</p>)
end
def relationship(item)
unless item.owner.nil?
contact = item.owner #so that it works for posts as well
else
contact = item.contact
end
user = item.user
if current_user != contact or current_user != user
return 5
else
if current_user == contact
if current_user == user
return 1
else
return 2
end
else
if contact == user
return 3
else
return 4
end
end
end
end
我有不同类型的项目。通常物品有“用户”和“联系人”。除了帖子,他们有一个“用户”和一个“所有者”。因为另一篇文章可以将它写在某人的墙上(为此所有者)。
现在,只要我尝试将联系人设置为item.contact,就会出现问题。它只是让'MyMethod'错误指出item.contact不存在。 (如果该项目是帖子而不是“连接”或可比较的话,这是显而易见的)。
所以我在征求您的意见: 1)解决这个问题的一些更多的红宝石,或者2)改变后模型,使一个职位有'用户'和'联系'?
谢谢你们 斯特凡诺
Uargh。请使用符号而不是整数。 – Reactormonk 2010-09-17 11:51:31
我讨厌成为一个家伙,但是这段代码真的很难遵循,看起来很诡异。我绝对不会通过向此添加更多代码来解决问题。我建议阅读单表继承,多态性,并考虑将'关系'移动到模型。 – 2010-09-17 12:14:05
纯粹是为了定制助手的输出而创建一个包含表格的新模型? @Tass:符号不会让它更混乱吗? :user_same_as_contact,:current_user_same_as_user我不知道如果我明白你的意思。 – KimJongIl 2010-09-17 12:31:53