Ruby on rails 使用新HABTM关系和未注册用户的Rails联系人表单
我是Rails新手,我正在尝试做以下工作,但我感觉我做得不安全: 我的网站的访问者可以查看用户的个人资料页面,无需注册即可与他们联系。在用户和访问者之间存在着一种“有”和“有”的关系。当访问者与用户联系时,我想在我的访问者表中创建一条新记录,记录他们提交的信息,并在users\u visitors表中创建一个新关系,以便以后向用户显示提交的信息。到目前为止,我所拥有的: 型号:Ruby on rails 使用新HABTM关系和未注册用户的Rails联系人表单,ruby-on-rails,has-and-belongs-to-many,Ruby On Rails,Has And Belongs To Many,我是Rails新手,我正在尝试做以下工作,但我感觉我做得不安全: 我的网站的访问者可以查看用户的个人资料页面,无需注册即可与他们联系。在用户和访问者之间存在着一种“有”和“有”的关系。当访问者与用户联系时,我想在我的访问者表中创建一条新记录,记录他们提交的信息,并在users\u visitors表中创建一个新关系,以便以后向用户显示提交的信息。到目前为止,我所拥有的: 型号: class User < ActiveRecord::Base has_and_belongs_to_many
class User < ActiveRecord::Base
has_and_belongs_to_many :visitors
class Visitor < ActiveRecord::Base
has_and_belongs_to_many :users
我迷失在两个方面:如何传递/使用创建关系所需的用户id,以及控制器(或模型)应该是什么样子来创建新关系?首先,我认为这条路线不是最好的
post '/contact', to: 'visitors#contact', :as => :contact
在我看来,这个联系人
操作应该放在你的用户
控制器上,而不是你的访客
控制器上;毕竟,你联系的是用户
,对吗
相反,您将受益于这样的路由(我不使用resourcesful路由,因为我不知道您的config/routes.rb
的其余部分是什么样子)
然后,userscoontroller
中的contact
方法可能如下所示
def contact
@user = User.find(params[:id]) # this is how you get the user the visitor is contacting
@visitor = Visitor.create(params[:visitor])
@visitor.users << @user # this associates the User with the Visitor
end
def触点
@user=user.find(params[:id])#这是获取访问者正在联系的用户的方式
@visitor=visitor.create(参数[:visitor])
@访问者。用户非常感谢您!这正是我想弄明白的。我将继续通过验证等方式充实代码,只是不想让其他人做所有的思考:)
post '/contact', to: 'visitors#contact', :as => :contact
post '/users/:id/contact', to: 'users#contact', :as => :contact
def contact
@user = User.find(params[:id]) # this is how you get the user the visitor is contacting
@visitor = Visitor.create(params[:visitor])
@visitor.users << @user # this associates the User with the Visitor
end