用户可以注册为艺术家。用户现在需要做的就是提供他的电子邮件。
在Artist控制器中,def创建。有类似的东西是正常的吗?
def create
@artist = current_user
respond_to do |format|
if @artist.update_attributes(params[:user]) # params[:user] contains email
@artist.is_artist = true
@artist.save
....
在我的用户模型中,我有:
attr_accessible :email
这意味着,我不能简单地做@ artist.update_attributes(:is_artist => true)。我将不得不使用save方法。这种方法常见吗?或者有更好的方法吗?
答案 0 :(得分:0)
您可以在模型中定义before_create方法:
class User < ActiveRecord::Base
...
before_create :fill_fields
def fill_fields
is_artist = true
end
end
答案 1 :(得分:0)
我会做以下事情:
1st:如果你没有艺术家模型,我没有设置ArtistController。相反,我会在你的UserController中添加一个非restful方法,并将实现逻辑推送到模型中......
# config/routes.rb
resources :users do
member {post 'signup_as_artist'}
end
# UserController
def signup_as_artist
@user = User.find(params[:id])
@user.signup_as_artist
end
# User
def signup_as_artist
self.update_attribute :is_artist, true
end
祝你好运