In case it helps, here is the same log from the page with 3 records on
it, all from Universe_id 1, each record shows with with Character
Update id = twice, one blank and once with the id of the object
because I wanted to make sure the area with Universe_id 1 was actually
a new record and not just some other record being pulled in from the
DB.):
Processing CharactersController#index (for 127.0.0.1 at 2009-05-28
12:44:54) [GET]
Parameters: {"action"=>"index", "controller"=>"characters"}
User Load (0.3ms) SELECT * FROM "users" WHERE ("users"."id" = 1)
Universe id set in session as: 1
SQL (0.1ms) select sqlite_version(*)
SQL (0.4ms) SELECT count(DISTINCT "characters".id) AS count_all
FROM "characters" LEFT OUTER JOIN "experiences" ON
experiences.character_id = characters.id LEFT OUTER JOIN
"characters_events" ON "characters_events".character_id =
"characters".id LEFT OUTER JOIN "events" ON "events".id =
"characters_events".event_id LEFT OUTER JOIN "users" ON "users".id =
"characters".created_by LEFT OUTER JOIN "users" modifiers_characters
ON "modifiers_characters".id = "characters".modified_by WHERE
((characters.universe_id = '1'))
Character Load (1.1ms) SELECT "characters".* FROM "characters"
WHERE ((characters.universe_id = '1')) ORDER BY characters."id" ASC
LIMIT 15 OFFSET 0
Experience Load (0.8ms) SELECT "experiences".* FROM "experiences"
WHERE ("experiences".character_id IN (5,6,7,8,9))
Event Load (0.8ms) SELECT "events".*, t0.character_id as
the_parent_record_id FROM "events" INNER JOIN "characters_events" t0
ON "events".id = t0.event_id WHERE (t0.character_id IN (5,6,7,8,9))
CACHE (0.0ms) SELECT * FROM "users" WHERE ("users"."id" = 1)
CACHE (0.0ms) SELECT * FROM "users" WHERE ("users"."id" = 1)
Rendering template within layouts/application
Rendering characters/list
Character Create universe_id = 1
Universe Load (0.3ms) SELECT * FROM "universes" WHERE
("universes"."id" = 1)
SQL (0.2ms) SELECT count(*) AS count_all FROM "characters"
Rendered _list_header (10.6ms)
Rendered _list_column_headings (16.6ms)
Rendered _messages (0.9ms)
Character Update universe_id = 1
Character Update id =
Character Update universe_id = 1
Character Update id = 5
CACHE (0.0ms) SELECT * FROM "universes" WHERE ("universes"."id" = 1)
Character Destroy universe_id = 1
Character Destroy universe_id = 1
Rendered _list_actions (3.1ms)
Rendered _list_record (81.3ms)
Character Update universe_id = 1
Character Update id =
Character Update universe_id = 1
Character Update id = 6
CACHE (0.0ms) SELECT * FROM "universes" WHERE ("universes"."id" = 1)
Character Destroy universe_id = 1
Character Destroy universe_id = 1
Rendered _list_actions (2.3ms)
Rendered _list_record (13.7ms)
Character Update universe_id = 1
Character Update id =
Character Update universe_id = 1
Character Update id = 7
CACHE (0.0ms) SELECT * FROM "universes" WHERE ("universes"."id" = 1)
Character Destroy universe_id = 1
Character Destroy universe_id = 1
Rendered _list_actions (2.2ms)
Rendered _list_record (13.0ms)
Character Update universe_id = 1
Character Update id =
Character Update universe_id = 1
Character Update id = 8
CACHE (0.0ms) SELECT * FROM "universes" WHERE ("universes"."id" = 1)
Character Destroy universe_id = 1
Character Destroy universe_id = 1
Rendered _list_actions (2.2ms)
Rendered _list_record (12.6ms)
Character Update universe_id = 1
Character Update id =
Character Update universe_id = 1
Character Update id = 9
CACHE (0.0ms) SELECT * FROM "universes" WHERE ("universes"."id" = 1)
Character Destroy universe_id = 1
Character Destroy universe_id = 1
Rendered _list_actions (2.3ms)
Rendered _list_record (12.6ms)
Rendered _list (163.0ms)
Completed in 218ms (View: 187, DB: 4) | 200 OK [http://0.0.0.0/characters]
As you can see, each record gets a blank record authorize_for call and
then an actual record authorize_for call.
Carl
On Thu, May 28, 2009 at 12:04 PM, Carl Anderson <[email protected]> wrote:
> If you need anything from me to figure out what's going on let me know.
>
> Carl
>
> On Thu, May 28, 2009 at 11:51 AM, Kenny Ortmann <[email protected]>
> wrote:
>> If I have time I'll take a look and see if I can figure out what is going on
>> that is causing this to make the calls more than once.
>>
>> On Thu, May 28, 2009 at 1:51 PM, Kenny Ortmann <[email protected]>
>> wrote:
>>>
>>> Well the reason it is calling it once with a default record is because the
>>> create action for instance is an action that is Model based not record
>>> based.
>>>
>>> so it creates a new record, with the default values and checks permissions
>>> against that. I don't know why it is running these for every record though.
>>>
>>> You should see on call to create_authorized and then on call per record to
>>> update show and delete
>>>
>>> On Thu, May 28, 2009 at 1:40 PM, Carl Anderson <[email protected]> wrote:
>>>>
>>>> Nope, only 1, that's my point. And there's a collection for set so
>>>> they only come from one Universe_id (3 in this case). On another page
>>>> I have 4 records from Universe_id 1 and each of those groups shows up
>>>> twice for each record, but of course they both have univserse_id 1.
>>>> Carl
>>>>
>>>> On Thu, May 28, 2009 at 11:34 AM, Kenny Ortmann <[email protected]>
>>>> wrote:
>>>> > I'm assuming you have 2 records on this list view?
>>>> >
>>>> > On Thu, May 28, 2009 at 1:31 PM, Carl <[email protected]> wrote:
>>>> >>
>>>> >> I figured out a little more about my problem with authorize for action
>>>> >> but I'm not sure why this is happening. It seems that 2 calls are made
>>>> >> to render each object, one with default attributes and one with the
>>>> >> actual attributes. This sounds odd, and might be incorrect, but I came
>>>> >> to this conclusion because my authorize for actions now look like this
>>>> >> for my Character model:
>>>> >>
>>>> >> def authorized_for_update?
>>>> >> #Greys out the associated link when the user isn't the creator or
>>>> >> authorized
>>>> >> logger.info "\n\nCharacter Update universe_id = #{self.universe_id}
>>>> >> \n\n"
>>>> >> new_record? || current_user.id == self.universe.creator_id ||
>>>> >> current_user.userlimits.find(:first, :conditions => "universe_id = #
>>>> >> {self.universe_id}").rights >= 3
>>>> >> end
>>>> >>
>>>> >> def authorized_for_destroy?
>>>> >> #Greys out the associated link when the user isn't the creator or
>>>> >> authorized
>>>> >> logger.info "\n\nCharacter Destroy universe_id = #
>>>> >> {self.universe_id}\n\n"
>>>> >> new_record? || current_user.id == self.universe.creator_id ||
>>>> >> current_user.userlimits.find(:first, :conditions => "universe_id = #
>>>> >> {self.universe_id}").rights >= 3
>>>> >> end
>>>> >>
>>>> >> def authorized_for_create?
>>>> >> #Greys out the associated link when the user isn't the creator or
>>>> >> authorized
>>>> >> logger.info "\n\nCharacter Create universe_id = #{self.universe_id}
>>>> >> \n\n"
>>>> >> current_user.id == self.universe.creator_id ||
>>>> >> current_user.userlimits.find(:first, :conditions => "universe_id = #
>>>> >> {self.universe_id}").rights >= 2
>>>> >> end
>>>> >>
>>>> >> def authorized_for_show?
>>>> >> logger.info "\n\nCharacter Show universe_id = #{self.universe_id}\n
>>>> >> \n"
>>>> >> #Greys out the associated link when the user isn't the creator or
>>>> >> authorized
>>>> >> new_record? || current_user.id == self.universe.creator_id ||
>>>> >> current_user.userlimits.find(:first, :conditions => "universe_id = #
>>>> >> {self.universe_id}").rights >= 1
>>>> >> end
>>>> >>
>>>> >>
>>>> >> And when I go to my character page my log looks like this:
>>>> >>
>>>> >> Processing CharactersController#index (for 127.0.0.1 at 2009-05-28
>>>> >> 11:15:21) [GET]
>>>> >> Parameters: {"action"=>"index", "controller"=>"characters"}
>>>> >> User Load (0.5ms) SELECT * FROM "users" WHERE ("users"."id" = 1)
>>>> >>
>>>> >>
>>>> >>
>>>> >> Universe id set in session as: 3
>>>> >>
>>>> >>
>>>> >> SQL (0.2ms) select sqlite_version(*)
>>>> >> SQL (0.5ms) SELECT count(DISTINCT "characters".id) AS count_all
>>>> >> FROM "characters" LEFT OUTER JOIN "experiences" ON
>>>> >> experiences.character_id = characters.id LEFT OUTER JOIN
>>>> >> "characters_events" ON "characters_events".character_id =
>>>> >> "characters".id LEFT OUTER JOIN "events" ON "events".id =
>>>> >> "characters_events".event_id LEFT OUTER JOIN "users" ON "users".id =
>>>> >> "characters".created_by LEFT OUTER JOIN "users" modifiers_characters
>>>> >> ON "modifiers_characters".id = "characters".modified_by WHERE
>>>> >> ((characters.universe_id = '3'))
>>>> >> Character Load (0.9ms) SELECT "characters".* FROM "characters"
>>>> >> WHERE ((characters.universe_id = '3')) ORDER BY characters."id" ASC
>>>> >> LIMIT 15 OFFSET 0
>>>> >> Experience Load (0.2ms) SELECT "experiences".* FROM "experiences"
>>>> >> WHERE ("experiences".character_id = 10)
>>>> >> Event Load (0.2ms) SELECT "events".*, t0.character_id as
>>>> >> the_parent_record_id FROM "events" INNER JOIN "characters_events" t0
>>>> >> ON "events".id = t0.event_id WHERE (t0.character_id = 10)
>>>> >> CACHE (0.0ms) SELECT * FROM "users" WHERE ("users"."id" = 1)
>>>> >> CACHE (0.0ms) SELECT * FROM "users" WHERE ("users"."id" = 1)
>>>> >> Rendering template within layouts/application
>>>> >> Rendering characters/list
>>>> >>
>>>> >>
>>>> >> Character Create universe_id = 1
>>>> >>
>>>> >> Universe Load (0.2ms) SELECT * FROM "universes" WHERE
>>>> >> ("universes"."id" = 1)
>>>> >> SQL (0.2ms) SELECT count(*) AS count_all FROM "characters"
>>>> >> Rendered _list_header (13.6ms)
>>>> >> Rendered _list_column_headings (93.9ms)
>>>> >> Rendered _messages (0.9ms)
>>>> >>
>>>> >>
>>>> >> Character Update universe_id = 1
>>>> >>
>>>> >>
>>>> >>
>>>> >> Character Update universe_id = 3
>>>> >>
>>>> >> Universe Load (0.3ms) SELECT * FROM "universes" WHERE
>>>> >> ("universes"."id" = 3)
>>>> >>
>>>> >>
>>>> >> Character Destroy universe_id = 1
>>>> >>
>>>> >>
>>>> >>
>>>> >> Character Destroy universe_id = 3
>>>> >>
>>>> >> Rendered _list_actions (3.8ms)
>>>> >> Rendered _list_record (26.6ms)
>>>> >> Rendered _list (134.2ms)
>>>> >> Completed in 196ms (View: 165, DB: 3) | 200 OK [http://0.0.0.0/
>>>> >> characters]
>>>> >>
>>>> >>
>>>> >>
>>>> >>
>>>> >> The only one that only shows up once per page is the Create action,
>>>> >> and it is using the default Universe_id = 1 which I assume is because
>>>> >> I set that as the default on my model, but I don't understand why the
>>>> >> one object on that page calls each of the other authorize for actions
>>>> >> twice, with self.universe_id set once to the default and once set to
>>>> >> the actual value? If I go to a page with 4 characters on it I see the
>>>> >> same thing, but with pairs of calls for each object (except for
>>>> >> Create, which only shows up once). Shouldn't it only be called once
>>>> >> with the actual value?
>>>> >>
>>>> >
>>>> >
>>>> > >
>>>> >
>>>>
>>>>
>>>
>>
>>
>> >>
>>
>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"ActiveScaffold : Ruby on Rails plugin" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/activescaffold?hl=en
-~----------~----~----~----~------~----~------~--~---