如何向rails app添加订阅功能(查看相关)

时间:2014-12-09 16:15:21

标签: ruby-on-rails ruby-on-rails-4

因此,我想让我的用户能够订阅其他用户的简报。我已经完成了所有设置的关联,我只是在编写实际的#34;订阅"按钮/功能,以便当用户点击它时,他们将订阅所选的时事通讯,然后从中接收电子邮件。

我如何将此功能编码为实际"订阅"用户?

我有以下型号&协会到位:

newsletter.rb

class Newsletter < ActiveRecord::Base
  has_many :subscriptions
  has_many :users, through: :subscriptions
  has_many :posts, dependent: :destroy
  belongs_to :user
  has_attached_file :image, :styles => { :medium => "300x300>", :thumb => "100x100>" }, :default_url => "/images/:style/missing.png"
  validates_attachment_content_type :image, :content_type => /\Aimage\/.*\Z/
  validates_presence_of :image, :name

  scope :for, ->(user) do
    if user 
      Newsletter.all
    end
  end

end

user.rb

class User < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, 
         :validatable

  has_many :subscriptions
  has_many :subscribed_newsletters, through: :subscriptions, class_name: "Newsletter"
  has_many :newsletters

  validates :email, uniqueness: true, presence: true
  validates_presence_of :password, on: :create         

end

subscription.rb

class Subscription < ActiveRecord::Base
  belongs_to :user
  belongs_to :newsletter
end

post.rb

class Post < ActiveRecord::Base
  belongs_to :newsletter
end

我有一个仪表板控制器,带有索引操作,我希望显示简报的订阅源,并在每个简报下都有一个订阅按钮。我如何编写此订阅功能?

请指教!

1 个答案:

答案 0 :(得分:1)

从上面的编码中,我假设你已经熟悉ROR&amp; JS的东西。所以,我不会开始编写代码,而是建议流程/方法。

理想情况下,您必须使用Ajax功能。

以下是伪代码:

  1. 在索引页面中,为每个NewsLetter添加一个“订阅”按钮/链接。
  2. 单击按钮/链接应触发Ajax请求。有效负载是新闻信的ID。
  3. 定义Controller#Action并路由相同的路径。此操作是由上述AJAX调用触发的操作。
  4. 定义将当前用户订阅到相应新闻信的操作。
  5. 在响应中(理想情况下为JS),使用UnSubscribe按钮替换按钮。
  6. 同样,定义取消订阅功能。