我已經建立了一個類似Twitter的@回覆,允許用戶互相接觸,通過用戶dailyposts ......類似計算器的一個職位。解析爲@username
以此爲指導https://github.com/kltcalamay/sample_app/compare/original-version...master
如何可以解析/掃描後&然後與鏈接到該用戶的頁面
後的實例代替@使用者名稱。
Kevins Post:
@Pzpcreations @john @steve hey everyone lets all hang out today
我想掃描/解析後,然後將用戶@Pzpcreations @約翰@steve鏈接到他們的個人資料
我試圖建立在我的Dailypost型號,存儲用戶名在方法陣列....但IDK如何更換,並將其鏈接到相應的用戶頁面
def username_link
str = self.content_html
recipient = str.scan(USERNAME_REGEX)
end
這給了我[ 「@Pzpcreations」, 「@約翰」, 「@steve」]
請幫我....新軌道:)
模型
class Recipient < ActiveRecord::Base
attr_accessible :dailypost_id, :user_id
belongs_to :user
belongs_to :dailypost
end
class User < ActiveRecord::Base
attr_accessible :name, :email, username
has_many :dailyposts, dependent: :destroy
has_many :replies, :class_name => 'Recipient', :dependent => :destroy
has_many :received_replies, :through => :replies, :source => 'dailypost'
end
class Dailypost < ActiveRecord::Base
attr_accessible :content, :recipients
belongs_to :user
###What is the Correct REGEX for Rails 4?
USERNAME_REGEX = /@\w+/i
has_many :recipients, dependent: :destroy
has_many :replied_users, :through => :recipients, :source => "user"
after_save :save_recipients
**private**
def save_recipients
return unless reply?
people_replied.each do |user|
Recipient.create!(:dailypost_id => self.id, :user_id => user.id)
end
end
def reply?
self.content.match(USERNAME_REGEX)
end
def people_replied
users = []
self.content.clone.gsub!(USERNAME_REGEX).each do |username|
user = User.find_by_username(username[1..-1])
users << user if user
end
users.uniq
end
end
SCHEMA
create_table "recipients", :force => true do |t|
t.string "user_id"
t.string "dailypost_id"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
[#<Recipient id: 7, **user_id: "103"**, dailypost_id: "316", created_at: "2013-06-18
10:31:16", updated_at: "2013-06-18 10:31:16">]
User_ID in recipients are the users that are mentioned in the Dailypost.
VIEWS
<%= link_to dailypost.username_link %>
創建一個輔助函數很好的問題,所有的重新levant data – Senjai
這樣做是否正確,你真的應該使用解析器。 –