2013-05-10 3 views
0

У меня есть один проект для школы, и я немного смущен, как сделать теги и категории связанных записей, поэтому, когда я искал некоторые подсказки в google, я нашел это thread. Так что я попытался подмости, как описано, и она работает просто отлично, но когда я запускал сервер и попытался создать новый пост это появилось:Rails schema scaffolding

ActiveModel :: MassAssignmentSecurity :: Ошибка в PostsController # создать

Не может масс-Присвоить защищенные атрибуты: категория, пользователь

Так что я действительно не знаю, что это неправильно, но я могу использовать некоторую помощь. Или, может быть, может быть предложен другой способ, проще проложить, как писать сообщения с тегами и категориями.

Большое спасибо

Вот модели:

class Post < ActiveRecord::Base 
    belongs_to :category 
    belongs_to :user 
    attr_accessible :body, :title, :category, :user 
end 

class Category < ActiveRecord::Base 
    attr_accessible :name 
end 

class Serie < ActiveRecord::Base 
    attr_accessible :name, :website 
end 

class Tag < ActiveRecord::Base 
    attr_accessible :name 
end 

class TagsSerie < ActiveRecord::Base 
    belongs_to :serie 
    belongs_to :tag 
    # attr_accessible :title, :body 
end 

class TagsPost < ActiveRecord::Base 
    belongs_to :post 
    belongs_to :tag 
    # attr_accessible :title, :body 
end 

class User < ActiveRecord::Base 
    attr_accessible :email, :password 
end 
+0

вы пропустили все ассоциации counterparts..for например, в категории has_many: столбы, has_many: пользователи. Или в модели тега .. есть ли все 1: n ассоциации или также n: m? Исправьте это, возможно, это автоматически удалит вашу ошибку. – Mattherick

+0

Я добавил эти копии, но я застрял на этих двух ошибках. В случае, если у меня есть категория вместо CATEGORY_ID он говорит 'Категории (# 36250644) ожидается, получил String (# 21132528)' в противном случае это говорит оригинал 'Не могу массово правопреемник защищенных атрибуты: категория, user' – Mythago

+0

вы можете разместить вашу схему и контроллер + форму? goted String (# 21132528) также является ложным, поскольку он должен быть целым числом. – Mattherick

ответ

1

Попробуйте установить attr_accessible :category_id, :user_id в вашей почтовой модели.

2

Добавить attr_accessible в вашей почтовой модели:

class Post < ActiveRecord::Base 
    attr_accessible :category_id, :user_id, :other_attributes_from_post_model 
end 
+0

Теперь это как моя модель сообщений выглядит следующим образом: класс Post Mythago

+0

И это работает? – Mattherick

+0

..извините, я не хочу добавлять, что он показывает ту же самую фразу, что и я опубликовал до – Mythago

1

По умолчанию Rails создает scaffolded модели со всеми ее атрибутами, не доступными, поэтому они не доступны для редактирования с помощью внешнего пользователя.

Так что, когда вы пытались создать новое сообщение, сообщение об ошибке поднятом как категория и пользователь защищены атрибуты Post.

Вы должны просмотреть ваше приложение/models/post.rb и остальные модели в той же папке, чтобы определить как доступные те атрибуты, которые должны быть доступны для редактирования внешним пользователем (например, веб-пользователем).

class Post < ActiveRecord::Base 
    attr_accessible :category_id, :user_id 
end 

С другой стороны, так доступные атрибуты не защищены больше для внешнего издания, так что вы не должны использовать attr_accessible для всех из них, но только для тех, что вы на самом деле позволяют быть изменены извне.

+1

3.неже тот же ответ :) – Mattherick