has_many : through 연관 문제가 있습니다. 모델은 다음과 같이 :액티브 레코드 has_many에 레코드를 추가하는 방법 : 레일의 연결을 통해
class User < ActiveRecord::Base
has_many :roles
has_many :datasets, through: :roles
has_secure_password
end
class Role < ActiveRecord::Base
belongs_to :user
belongs_to :dataset
end
class Dataset < ActiveRecord::Base
has_many :roles
has_many :users, through: :roles
end
내가 역할에 새 데이터 집합이 생성 될 때마다 레코드를 추가 할 수 있습니다. 새 데이터 집합, 기존 사용자 'Admin'을 사용하여 을 만들고 역할의 열 이름을 'Admin'으로 설정해야합니다.
나는 Stackoverflow에서 찾은 모든 것을 시도했지만 아무 것도 나를 위해 작동합니다.
는 DatasetController의 방법을 만들어 내는이 보인다 :
def create
@dataset = Dataset.new(dataset_params)
@dataset.save
@user = User.find_by(name: 'Admin')
@dataset.users << @user
#@dataset.roles.create(user: @user, dataset: @dataset, name: 'Admin')
respond_with(@dataset)
end
내가 <<
연산자와 create
방법을 모두 시도했다. 에서
첫 번째 결과 :
ActiveRecord::UnknownAttributeError in DatasetsController#create
unknown attribute: dataset_id
에서 두 번째 : 나는 이러한 오류를 얻을 이유
이ActiveModel::MissingAttributeError in DatasetsController#create
can't write unknown attribute `user_id
사람이 알고 있나요?
내 schema.rb :
create_table "datasets", force: true do |t|
t.string "name"
t.text "description"
t.datetime "created_at"
t.datetime "updated_at"
end
create_table "roles", force: true do |t|
t.string "name"
t.datetime "created_at"
t.datetime "updated_at"
end
create_table "users", force: true do |t|
t.string "name"
t.string "mail"
t.string "password_digest"
t.datetime "created_at"
t.datetime "updated_at"
end
당신은 당신의'schema.rb'을 게시 할 수 있습니까? 그냥 3 모델 –
덕분에, 그것은 내 질문에 지금 .. – nothiing