Прежде всего, я новичок в Rails, поэтому прошу прощения, если это длинный. Я создаю такую работу, как веб-сайт, на котором у него будут два типа пользователей: компании, которые будут размещать рабочие места и охотников за работой, которые смогут подать заявку на них. Поскольку это отношения один-ко-многим, я пытался следовать инструкциям Embedded Ассоциации Railscasts': http://railscasts.com/episodes/189-embedded-association где я сделал:Как назначить ранее существовавшие роли пользователям после регистрации в Rails 4?
Баш:
rails generate migration add_role_to_users role:string
rake db:migrate
модели/user.rb
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
ROLES = %w[admin company user]
def role_symbols
[role.to_sym]
end
end
пользователей/new.html.erb:
<p>
<%= f.label :role %><br />
<%= f.collection_select :role, User::ROLES, :to_s, :humanize %>
</p>
По какой-то причине f.collection_select является п добавление роли в столбец роли в таблице «Пользователь». Когда я перехожу на консоль Rails, только что созданный пользователь присутствует, но роль «nil». Я попытался использовать ролик Rolify, но он не дал много инструкций о том, как добавлять предварительно установленные роли, используя форму. Моя другая мысль заключается в том, что если я создаю модель ролей и добавлю роли там вручную, не все ли записи (роли) будут удалены при загрузке на производство? Итак, мой вопрос:
Я что-то не так с f.collection_select? или есть лучший способ сделать это (без создания таблицы)? или просто лучший способ?
вы позволяя: параметр роли в контроллере? http://edgeapi.rubyonrails.org/classes/ActionController/StrongParameters.html –
также, проверьте перечисления как способ представления значений users.role: http://api.rubyonrails.org/classes/ActiveRecord/Enum. HTML –