Если вы хотите сделать это, вы должны написать специальные методы установки / получения для содержимого публикации. Простой пример:
В модели (в данном примере столбец с постом называется «контентом»):
attr_reader :set_content
attr_accessor :set_content
attr_reader :get_content
attr_accessor :get_content
def set_content=(content)
users = content.scan(/\@(.*)\ /)
users.each do |user_name|
user = User.find_by_name(user_name[1])
content.gsub!("@#{user_name[1]}", "|UID:#{user.id}|") unless user.nil?
end
self.content=content
end
def get_content
current_content=self.content
users = self.content.scan(/\|UID\:([0-9]*)\|/)
users.each do |user_id|
user = User.find(user_id[1])
current_content.gsub!("|UID:#{user_id[1]}|", "<your link stuff here>")
end
current_content
end
Тогда вы должны использовать эти методы установки / получения в частичном. Я только что написал это «из моей головы», там может быть какая-то синтаксическая чушь, но я думаю, что вы понимаете, о чем я говорю!
Преимущество этого метода в том, что вы также можете изменять имена пользователей, поскольку вы сохраняете идентификатор пользователя в момент создания постов.