나는 현재 피클에 빠져있다. 나는 현재의 루비 지식으로 너무 많이 파고 들지만 나는 포기하고 싶지 않다. 나는 현재 게시 할 수있는 트위터를 가지고 있으며 사람들은 https://www.railstutorial.org/book/ 덕분에 다른 사람들을 따라갈 수 있습니다. 이 튜토리얼 트위터에 해시 태그를 추가하고 싶습니다. 위해서는 트윗과 해시 태그 이후 2 테이블을 만들려면 많은 관계가 많습니다. 테이블은 다음과 같습니다루비의 데이터베이스에 데이터 추가하기
당신이 트윗과 해시 태그의 키를 유지하는 데 필요한 추가 테이블class CreateHashrelations < ActiveRecord::Migration
def change
create_table :hashrelations do |t|
t.integer :tweet_id
t.integer :hashtag_id
t.timestamps null: false
end
add_index :hashrelations, [:tweet_id, :hashtag_id], unique: true
end
end
. 내가 저장
class Hashtag < ActiveRecord::Base
has_many :hashtagrelations, dependent: :destroy
has_many :tweets, through: :hashtagrelations
validates :name, presence: true
end
class Hashrelation < ActiveRecord::Base
belongs_to :tweet
belongs_to :hashtag
validates :tweet_id, presence: true
validates :hashtag_id, presence: true
end
class Tweet < ActiveRecord::Base
.....
has_many :hashtagrelations, dependent: :destroy
has_many :hashtags, through: :hashtagrelations
....
end
트윗이 submited 경우 : 그리고 다른 테이블 내가 ID와 나는 다음 relathipships을 넣어 hastag 모델에서
class CreateHashtags < ActiveRecord::Migration
def change
create_table :hashtags do |t|
t.string :name
t.timestamps null: false
end
end
end
의 이름이 해시 태그 테이블 저장된 경우 해시 태그가 있는지 확인하고 필요한 경우 해시 태그 및 해시 테이블에 필요한 데이터를 추가하려고합니다. 나는이 이런 식으로 수행하려고 :
class TweetsController < ApplicationController
......
def create
@tweet = current_user.tweets.build(tweet_params)
if @tweet.save
add_hashtags(@tweet)
flash[:success] = "Tweet created!"
redirect_to root_url
else
@feed_items = []
render 'static_pages/home'
end
end
......
private
........
def add_hashtags(tweet)
tweet.content.scan(/(?:\s|^)(?:#(?!(?:\d+|\w+?_|_\w+?)(?:\s|$)))(\w+)(?=\s|$)/){ |tag|
newhash[:new] = tag
@hashtag = Hashtag.new(new_hash[:new])
@hashtag.save
data[:new] = [tweet.id,@hashtag.id]
@hashrel = Hashtagrel.new(data[:new])
@hashrel.save
}
end
end
올바른 방법이 아니다. 나는 단지 거기 태그를했다면 나는이 데이터를 추가하는 방법을 나는이 바보 같은 질문의 종류 실현
When assigning attributes, you must pass a hash as an argument.
을 얻을 것입니다하지만 난 나를 가르치고 더 자습서를 발견했기 때문에 newhash 및 데이터를 추가하려 내 테이블에. 나는이 값의 배열입니다 당신의 도움
옙, 그 것이었다 : P 대단히 감사합니다. D –