Я работаю на сайте социальной сети (если честно, в основном это копия Facebook), и я повторно использовал большие части инсоши. Но подача инсоши недостаточно точна для моих предпочтений. Так как он не поддерживает более специализированные сообщения. Вы увидите, что я имею в виду в следующем
код:
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 ... он просто продолжает вызывать у меня ошибку 'NoMethod', говоря, что item.contact не существует. (что очевидно, если элемент является постом, а не «связью» или сопоставимым).
Поэтому я спрашиваю ваше мнение:
1) Исправить проблему с помощью еще одного рубина, или
2) изменить модель поста так, чтобы пост имел «пользователя» и «контакт»?
Спасибо, ребята
Stefano