better filtering

This commit is contained in:
Felix Van der Jeugt 2015-09-10 13:25:25 +02:00
parent 3a7472dcd0
commit 00272f34ee

View file

@ -7,7 +7,7 @@ class TransactionsGrid
scope do
Transaction
#@current_user.transactions
# TODO current user should not be nil
# TODO how to get current user here?
end
self.default_column_options = { order: false }
@ -18,13 +18,17 @@ class TransactionsGrid
column(:amount)
filter(:amount, :integer, range: true)
column(:peer) { |model| model.peer_of(@current_user).try(:name) }
#filter(:peer) { |value| where(
# TODO extensive?
column(:peer) { |model, scope, grid| model.peer_of(grid.current_user).try(:name) }
filter(:peer, :string, header: 'Peer') do |value, scope, grid|
scope.joins(debtor: 'id', creditor: 'id')
.where("(debtor_id = :user AND creditor.name LIKE :name) OR (creditor_id = :user AND debtor.name LIKE :name)", user: grid.current_user.id, name: "%#{value}%")
end
# TODO this should probably by a SQL statement
column(:issuer) { |model| model.issuer.name }
#filter(:issuer) { |value| where("issuer.name LIKE :value", value: "%#{value}%") }
# TODO issuer.name needs join
filter(:issuer, :string, header: 'Issuer') do |value|
self.joins(:issuer).where("issuer.name LIKE :value", value: "%#{value}%")
end
column(:message)
filter(:message) { |value| where("message LIKE :value", value: "%#{value}%") }