2017-04-21 57 views
0

我正在將公司的會話固定到列表的頂部。Rails:允許一次會話:一次固定

一家公司應該能夠將一個火花會話固定在列表頂部。由於公司只能擁有一個固定會話,因此如果他們嘗試固定新會話,它應該保存新固定的會話並自動取消固定任何其他會話。

型號:

class SparkSession < ActiveRecord::Base 
    def pinned! 
    self.pinned = true 
    self.save! 
    end 
end 

控制器:

class SparkSessionsController < SubdomainsController 
    def index 
    @spark_sessions = @company.spark_sessions.where(is_archived: false).order_by_pinned_then_created 
    end 
    def pin 
    load_spark_session 
    @spark_session.pinned! 
    flash[:notice] = 'Spark Session pinned' 
    redirect_to action: :index 
    rescue ActiveRecord::RecordInvalid 
    flash.now[:error] = 'Failed to pin Spark Session' 
    redirect_to action: :index 
    end 
end 

查看:

%td= link_to 'Pin', pin_spark_session_path(tbl), method: :post 

什麼是處理該公司的會話repinning最有效的方法是什麼?而且,在視圖或方法中,是否有一種更具特色的方式使用造型元素來固定帖子?

+0

將'pinned_session'作爲引用當前固定會話的用戶/公司的屬性。 – mudasobwa

回答

0

我會爲公司模型添加pin_session方法。在那裏,您可以執行任務並更新其餘會話的固定屬性