Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 制作一个动态按钮,以便用户每天只邀请一个人_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 制作一个动态按钮,以便用户每天只邀请一个人

Ruby on rails 制作一个动态按钮,以便用户每天只邀请一个人,ruby-on-rails,ruby,Ruby On Rails,Ruby,我创建了一个应用程序,用户可以邀请某人每天参加一小时的培训。我希望当用户已经邀请某人时,该按钮在其他培训课程中消失,当该按钮出现在他邀请用户的培训节目中时,会出现“取消邀请”按钮。我已经有了创建和删除的方法。我需要这个代码逻辑的帮助 以下是我的模型(用户、来宾和培训): training.rb class Training < ApplicationRecord has_many :users, through: :bookings has_many :bookings has

我创建了一个应用程序,用户可以邀请某人每天参加一小时的培训。我希望当用户已经邀请某人时,该按钮在其他培训课程中消失,当该按钮出现在他邀请用户的培训节目中时,会出现“取消邀请”按钮。我已经有了创建和删除的方法。我需要这个代码逻辑的帮助

以下是我的模型(用户、来宾和培训):

training.rb

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