我正在尝试创建一种预订功能,用户可以在特定时间内预订汽车:
我已经使用devise设置了所有用户功能,这就是我当前的用户模型:
class User < ApplicationRecord
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable, :recoverable,
:rememberable, :trackable, :validatable,
:omniauthable, :omniauth_providers => [:facebook , :google_oauth2]
end
我还创建了一个使用g形导轨的汽车脚手架,这些脚手架容纳以下字段:name
,make
,model
,number_plate
和color
>
这是我目前的汽车型号:
class Car < ApplicationRecord
end
我想制作一个连接到两个桌子的预订支架。这样,当用户进行预订时,他们可以在预订表单中输入汽车名称,并将预订与具有相同名称的汽车相关联。
我正在考虑像这样运行脚手架命令:
rails g scaffold Booking user:references car:references start_time:string end_time:string car_name:string
其中的汽车名称是用来将预订链接到特定汽车的
,然后在模型中指定关系:
class User < ApplicationRecord
has_many :bookings
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable, :recoverable,
:rememberable, :trackable, :validatable,
:omniauthable, :omniauth_providers => [:facebook , :google_oauth2]
end
class Bookings < ApplicationRecord
belongs_to :user
has_one :car , :foreign_key => "car_name",
end
class Car < ApplicationRecord
belongs_to and has_many :bookings
end
我还没有尝试制作预订支架,我只是想问一问我在开始之前是否朝着正确的方向前进。任何提示将不胜感激
答案 0 :(得分:0)
您需要的只是一个标准的加入模型:
class User < ApplicationRecord
has_many :bookings
has_many :cars, through: :bookings
end
class Bookings < ApplicationRecord
belongs_to :user
# KISS. Just use an id for the foreign key
belongs_to :car
end
class Car < ApplicationRecord
has_many :bookings
has_many :users, through: :bookings
end
我想制作一个预订支架,将其连接到 表。这样,当用户进行预订时,他们可以输入汽车 名称输入预订表格,它将使预订与 具有相同名称的汽车。
实际上,这注定不是非常用户友好,因为用户必须输入与数据库中的值完全相同的名称。您还希望遵守约定并将ID用于外键关联KISS。而是创建一个选择:
<%= form_for(@booking) do |f| %>
<div class="row">
<%= f.label :car_id, 'Select your car' %>
<%= f.collection_select :car_id, Car.all, :id, :name %>
</div>
<% end %>
如果您确实想拥有该功能,则应将其实现为AJAX autocomplete *。