On Thursday, December 24, 2015 at 11:11:21 AM UTC-8, Muhammad Nuzaihan Bin
Kamal Luddin wrote:
>
> Hi,
>
> I tried to find the manual of sequel combining the result of multiple
> queries. The docs using .merge reflects on a very old version of sequel gem
> and i am trying to combine the query result into one result. I have looked
> at
> http://stackoverflow.com/questions/9540801/combine-two-activerecordrelation-objects
>
> but it is only activerecord only and doesn't apply to sequel.
>
> Here is the code which i am trying to do.
>
> class BillingsController < ApplicationController
> def show
> @wifis = Wifi.where(user_id: current_user.id)
> @wifis.each do |wifi|
> billing = Radacct.fetch("SELECT
> radusergroup.username,radusergroup.groupname,radacct.acctstarttime,radacct.acctstoptime
>
> FROM radusergroup INNER JOIN radacct ON
> radusergroup.username=radacct.username WHERE calledstationid = ? GROUP BY
> radusergroup.username", wifi.mac_id)
> @billings << billing
> end
> end
> end
>
>
> I am using @billings << billing to add the data but i got this follow
> error:
>
> F, [2015-12-24T22:59:01.403150 #17112] FATAL -- :
> NoMethodError (undefined method `<<' for nil:NilClass):
> app/controllers/billings_controller.rb:6:in `block in show'
> app/controllers/billings_controller.rb:4:in `show'
>
In this case, it is because @billings is not defined, so the result is nil,
and you end up calling << on nil, which is not defined, and raises
NoMethodError. I'm guessing you want something like:
class BillingsController < ApplicationController
def show
@wifis = Wifi.where(user_id: current_user.id).all
@billings = @wifis.map do |wifi|
Radacct.fetch("SELECT
radusergroup.username,radusergroup.groupname,radacct.acctstarttime,radacct.acctstoptime
FROM radusergroup INNER JOIN radacct ON
radusergroup.username=radacct.username WHERE calledstationid = ? GROUP BY
radusergroup.username", wifi.mac_id).first
end
end
end
Thanks,
Jeremy
--
You received this message because you are subscribed to the Google Groups
"sequel-talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/sequel-talk.
For more options, visit https://groups.google.com/d/optout.