Erwin1
(Erwin)
November 21, 2012, 1:33pm
1
I wrote this scope in my Subdomain model :
scope :in_account, lambda { |account_id|
if account_id == “*”
where(“account_id >= ?”, 0)
else
where(account_id: account_id)
end
}
where account_id == ‘*’ then all subdomain instances are selected
when account_id is given , only subdomain instances in this account are selected
is there a better writing ?
thanks for feedback
I wrote this scope in my Subdomain model :
scope :in_account, lambda { |account_id|
if account_id == "*"
where("account_id >= ?", 0)
else
where(account_id: account_id)
end
}
where account_id == '*' then all subdomain instances are selected
when account_id is given , only subdomain instances in this account are
selected
is there a better writing ?
you can use scoped instead
account_id == '*' ? scoped : where(account_id: account_id)
Try:
scope :in_account, lambda { |account_id|
where(account_id: account_id) if account_id != "*"
}
If the conditional fails, this will just not interfere with the query.
If it's possible that account_id will be nil or blank (as on a page
accessed w/o passing any params), tack "&& account_id.present?" onto
the conditional.
-Dave