Я работаю на сайте социальной сети (в основном, копию фейсбука, если честно ...), и я повторно использовал большие части insoshi. Но корма insoshi недостаточно точна для моих предпочтений. Так как в нем нет более специализированных сообщений. Вы увидите, что я имею в виду в следующем коде:рельсы проверяют наличие существующего атрибута экземпляра
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) изменить пост модель, так что пост имеет «пользователь» и «контакт»?
Спасибо, ребята Стефано
Uargh. Пожалуйста, используйте Символы вместо целых. – Reactormonk
Ненавижу быть членом, но этот код действительно сложно понять и выглядит очень хаки. Я бы определенно не исправил проблему, добавив к этому код. Я бы порекомендовал читать на однонамерном наследовании, полиморфизме и подумал о том, чтобы переместить 'отношение' в модель. –
сделать новую модель, включая таблицу, исключительно с целью настройки вывода помощника? @Tass: символы бы не стали более запутанными? : user_same_as_contact,: current_user_same_as_user Я не уверен, что понимаю, что вы имеете в виду. – KimJongIl