user
model ve shout
modelim var. Bir kullanıcının bir notla ilişkilendirilmesini sağlamaya çalışıyorum. Bu ilişkiyi seslendirme masasının yaratılması üzerine yapmadım, böylece yeni bir göç ettirmek zorunda kaldım. Aşağıda benim masa, her birinin modelleri ve konsolumdan çıkış çıktığında, bir notun user_id değerini bulmak için bir komut çalıştırıyorum. Ne yaptığımı görebiliyor musun?User_id, raylar derneği üzerinde sıfırdır
şema:
create_table "shouts", force: :cascade do |t|
t.string "title"
t.text "description"
t.integer "user_id"
end
add_index "shouts", ["user_id"], name: "index_shouts_on_user_id"
create_table "users", force: :cascade do |t|
t.string "email", null: false
t.string "password_digest", null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "username"
end
Kullanıcı Modeli:
class User < ActiveRecord::Base
validates :email, presence: true, uniqueness: true
validates :password_digest, presence: true
has_many :shouts
end
Seslen Modeli:
class Shout < ActiveRecord::Base
belongs_to :user
end
Seslen Denetleyici:
sınıf ShoutsController < Uy nController
def new
@new_shout = Shout.new
end
def create
@new_shout = Shout.new(shouts_params)
if @new_shout.user_id == nil
render new_shout_path
elsif @new_shout.save
redirect_to dashboard_path
else
render new_shout_path
end
end
private
def shouts_params
params.require(:shout).permit(:title, :description, :user_id)
end
uç
Bazı test kodu:
> Shout.find(4)
> #<Shout id: 4, title: "four", description: "four", user_id: nil>
konsoldan kullanıcı bir örneğini oluşturma, çalışma:
> User.first.shouts.create(title: 'four', description: 'four')
>[["title", "four"], ["description", "four"], ["user_id", 1]
Göç dosyası:
class AddUserRefToShouts < ActiveRecord::Migration
def change
add_reference :shouts, :user, index: true, foreign_key: true
end
end
Taşıma görünüm ne yapar sevmek? 2) Nerede (herhangi bir yer) bir kullanıcıya bağırıyorsunuz yoksa mesela mı? DB'de varolan sesler var gibi görünüyor, sonra bir geçişte shouts.user_id sütunu ekledi, ancak bu shouts için user_id'de hiçbir zaman doldurulmadı. –
"Not" kaydının nasıl oluşturulduğunu gösterebilir misiniz? Dernek oluşturmanız gerekiyor. Örneğin. user_id öğesini atayan user.shouts.create (başlık: 'four', description: 'four') '. –
@d_ethier 'User.shouts.create ifadesini döndürür (title:' four ', description:' four ') NoMethodError: undefined method 'shouts' için #
' – Jbur43