Ruby on rails 制作一个动态按钮,以便用户每天只邀请一个人
我创建了一个应用程序,用户可以邀请某人每天参加一小时的培训。我希望当用户已经邀请某人时,该按钮在其他培训课程中消失,当该按钮出现在他邀请用户的培训节目中时,会出现“取消邀请”按钮。我已经有了创建和删除的方法。我需要这个代码逻辑的帮助 以下是我的模型(用户、来宾和培训): training.rbRuby on rails 制作一个动态按钮,以便用户每天只邀请一个人,ruby-on-rails,ruby,Ruby On Rails,Ruby,我创建了一个应用程序,用户可以邀请某人每天参加一小时的培训。我希望当用户已经邀请某人时,该按钮在其他培训课程中消失,当该按钮出现在他邀请用户的培训节目中时,会出现“取消邀请”按钮。我已经有了创建和删除的方法。我需要这个代码逻辑的帮助 以下是我的模型(用户、来宾和培训): training.rb class Training < ApplicationRecord has_many :users, through: :bookings has_many :bookings has
class Training < ApplicationRecord
has_many :users, through: :bookings
has_many :bookings
has_many :guests
end
这是我尝试过的逻辑(但不起作用):
创建一个
邀请
模型,如下所示:
class CreateInvitations < ActiveRecord::Migration[5.0]
def change
create_table :invitations do |t|
t.string :user_id
t.string :guest_id
t.timestamps
end
end
end
class Invitation < ApplicationRecord
belongs_to :user
has_many :guests
end
class CreateInvestments
然后检查用户在过去24小时内是否已经邀请了客人:
last_invitation_date = user.invitations.order(:created_at).last.created_at
can_invite = last_invitation_date < DateTime.now - 1.day
last\u invitation\u date=user.invitations.order(:created\u at).last.created\u at
can_invite=上次邀请日期
有什么不起作用?删除按钮?还是什么?仅供参考,读一下你会know@Md.FarhanMemon一切正常,但我需要这样的逻辑:当用户已经邀请某人时,它不能邀请其他人加入另一个类,只需取消它已经激活的邀请,我应该将上次邀请日期添加到邀请模型中,对吗?不可能。因为我们从用户对象中提取上次邀请日期。您可以在名为can\u invite?
的用户模型中创建一个方法,并将最后两行放在其中,检查用户是否可以邀请来宾。
Rails.application.routes.draw do
root 'static_pages#home'
get '/signup', to: 'users#new'
get '/contact', to: 'static_pages#contact'
get '/about', to: 'static_pages#about'
get '/login', to: 'sessions#new'
post '/login', to: 'sessions#create'
delete '/logout', to: 'sessions#destroy'
resources :account_activations, only: [:edit]
resources :password_resets, only: [:new, :create, :edit, :update]
resources :users do
resources :rms
end
resources :trainings do
resources :guests
resources :bookings
end
end
<% if current_user.trainings.any? %>
<%= link_to "Cancel invitation",
training_guest_path(@training, @training.guests.where(user: current_user).first),
method: :delete,
data: { confirm: "Sure??" },
class: "btn btn-primary" %>
<% else %>
<%= link_to "Invite", new_training_guest_path(current_user), class: "btn btn-primary" %>
<% end %>
class CreateInvitations < ActiveRecord::Migration[5.0]
def change
create_table :invitations do |t|
t.string :user_id
t.string :guest_id
t.timestamps
end
end
end
class Invitation < ApplicationRecord
belongs_to :user
has_many :guests
end
last_invitation_date = user.invitations.order(:created_at).last.created_at
can_invite = last_invitation_date < DateTime.now - 1.day